package main

import "fmt"

func main() {
	//golang中，有循环控制语句来处理循环的执行某段代码的方法->for循环
	//for循环快速入门
	for i := 1; i < 10; i++ {
		fmt.Println("您好，港港", i)
	}
	//for循环的第二种写法
	j := 1        //循环变量初始化
	for j <= 10 { //循环条件
		fmt.Println("你好，港港", j)
		j++ //循环变量迭代
	}
	//for循环的第三种写法,这种写法通常会配合break使用
	k := 1
	for {
		if k <= 10 {
			fmt.Println("ok~")
		} else {
			break //break就是跳出这个for循环
		}
		k++
	}

	//字符串遍历方式1 - 传统方式
	var str string = "hello,world!北京"
	for i := 0; i < len(str); i++ {
		fmt.Printf("%c\n", str[i]) //使用到下标
	}

	//如果字符串含有中文，那么传统的遍历字符串方式，就是错误，会出现乱码
	//原因是传统的对字符串的遍历是按照字节来遍历，而一个汉字在utf-8编码是对应3个字节
	//如何解决，需要将str转成[]rune切片
	var str1 string = "北京"
	str2 := []rune(str1)
	for i := 0; i < len(str2); i++ {
		fmt.Printf("%c\n", str2[i])
	}

	//字符串遍历方式2 - for-range
	//对应for-range遍历方式而言，是按照字符方式遍历，因此如果有中文，也是ok的
	str = "abc~ok上海"
	for index, val := range str {
		fmt.Printf("index=%d,val=%c\n", index, val)
	}
}
